home *** CD-ROM | disk | FTP | other *** search
/ BBS in a Box 7 / BBS in a Box - Macintosh - Volume VII (BBS in a Box) (January 1993).iso / Files / Hyper / Me-Mz / MultScr.cpt / MultiScroll XCMD / card_3700.txt < prev    next >
Text File  |  1988-07-17  |  10KB  |  471 lines

  1. -- card: 3700 from stack: in
  2. -- bmap block id: 2889
  3. -- flags: 0000
  4. -- background id: 2593
  5. -- name: 
  6. ----- HyperTalk script -----
  7. on openCard
  8.   global initScroll
  9.   put 0 into initScroll
  10.   MultiScroll 0,"1,card","3,card","4,card"
  11. end openCard
  12.  
  13. on idle
  14.   global initScroll
  15.   repeat with i = 1 to 3
  16.     get the scroll of card field i
  17.     if it is not initScroll then
  18.       put it into initScroll
  19.       MultiScroll it,"1,card","3,card","4,card"
  20.     end if
  21.   end repeat
  22.   pass idle
  23. end idle
  24.  
  25.  
  26. -- part 3 (field)
  27. -- low flags: 01
  28. -- high flags: 2007
  29. -- rect: left=47 top=58 right=301 bottom=93
  30. -- title width / last selected line: 0
  31. -- icon id / first selected line: 0 / 0
  32. -- text alignment: 0
  33. -- font id: 0
  34. -- text size: 12
  35. -- style flags: 0
  36. -- line height: 16
  37. -- part name: Hello 3
  38.  
  39.  
  40. -- part 4 (field)
  41. -- low flags: 01
  42. -- high flags: 2007
  43. -- rect: left=76 top=58 right=301 bottom=195
  44. -- title width / last selected line: 0
  45. -- icon id / first selected line: 0 / 0
  46. -- text alignment: 0
  47. -- font id: 0
  48. -- text size: 12
  49. -- style flags: 0
  50. -- line height: 16
  51. -- part name: Hello 4
  52.  
  53.  
  54. -- part 1 (field)
  55. -- low flags: 01
  56. -- high flags: 2007
  57. -- rect: left=178 top=58 right=301 bottom=460
  58. -- title width / last selected line: 0
  59. -- icon id / first selected line: 0 / 0
  60. -- text alignment: 0
  61. -- font id: 3
  62. -- text size: 9
  63. -- style flags: 0
  64. -- line height: 16
  65. -- part name: Hello
  66.  
  67.  
  68. -- part 5 (button)
  69. -- low flags: 00
  70. -- high flags: 0000
  71. -- rect: left=443 top=58 right=301 bottom=460
  72. -- title width / last selected line: 0
  73. -- icon id / first selected line: 0 / 0
  74. -- text alignment: 1
  75. -- font id: 0
  76. -- text size: 12
  77. -- style flags: 0
  78. -- line height: 16
  79. -- part name: MultiScroll
  80. ----- HyperTalk script -----
  81. on mouseDown
  82.   global initScroll
  83.   put the rect of me into myRect
  84.   MultiScroll myRect,"1,card","3,card","4,card"
  85.   put the scroll of card field id 1 into initScroll
  86. end mouseDown
  87.  
  88. on mouseWithin
  89.   MultiScroll Init
  90. end mouseWithin
  91.  
  92. on mouseLeave
  93.   MultiScroll UnInit
  94. end mouseLeave
  95.  
  96.  
  97. -- part 11 (field)
  98. -- low flags: 81
  99. -- high flags: 2004
  100. -- rect: left=41 top=52 right=307 bottom=471
  101. -- title width / last selected line: 0
  102. -- icon id / first selected line: 0 / 0
  103. -- text alignment: 0
  104. -- font id: 3
  105. -- text size: 12
  106. -- style flags: 0
  107. -- line height: 16
  108. -- part name: Reminder
  109. ----- HyperTalk script -----
  110. on mouseUp
  111.   set lockScreen to true
  112.   hide card btn "Oscar"
  113.   hide card field "Reminder"
  114. end mouseUp
  115.  
  116.  
  117.  
  118. -- part 10 (button)
  119. -- low flags: 80
  120. -- high flags: 0000
  121. -- rect: left=46 top=54 right=89 bottom=83
  122. -- title width / last selected line: 0
  123. -- icon id / first selected line: 5155 / 5155
  124. -- text alignment: 1
  125. -- font id: 0
  126. -- text size: 12
  127. -- style flags: 0
  128. -- line height: 16
  129. -- part name: Oscar
  130.  
  131.  
  132. -- part 12 (button)
  133. -- low flags: 00
  134. -- high flags: 8004
  135. -- rect: left=193 top=312 right=334 bottom=331
  136. -- title width / last selected line: 0
  137. -- icon id / first selected line: 0 / 0
  138. -- text alignment: 1
  139. -- font id: 0
  140. -- text size: 12
  141. -- style flags: 0
  142. -- line height: 16
  143. -- part name: News From Oscar
  144. ----- HyperTalk script -----
  145. on mouseUp
  146.   if visible of card field "Reminder" is true then
  147.     set lockScreen to true
  148.     hide card btn "Oscar"
  149.     hide card field "Reminder"
  150.   else
  151.     set lockScreen to true
  152.     show card field "Reminder"
  153.     show card btn "Oscar"
  154.   end if
  155. end mouseUp
  156.  
  157.  
  158.  
  159. -- part contents for card part 4
  160. ----- text -----
  161. MultiScroll
  162.  
  163. Intro
  164.  
  165.  
  166.  
  167.  
  168. Create Fields
  169.  
  170.  
  171.  
  172.  
  173.  
  174. Make Button
  175.  
  176.  
  177.  
  178.  
  179.  
  180.  
  181.  
  182. Put a Carriage Return after each line in the fields
  183.  
  184.  
  185.  
  186.  
  187.  
  188.  
  189.  
  190.  
  191. Create a Mousedown Handler
  192.  
  193.  
  194.  
  195.  
  196.  
  197.  
  198.  
  199.  
  200.  
  201. Read this if you're obsessive-compulsive
  202.  
  203.  
  204.  
  205.  
  206.  
  207. Read this if you're VERY picky.
  208.  
  209.  
  210.  
  211.  
  212.  
  213.  
  214.  
  215.  
  216.  
  217.  
  218. Okay, fine.
  219.  
  220.  
  221.  
  222.  
  223.  
  224. Coordinating Fields against  meddling
  225.  
  226.  
  227.  
  228.  
  229. Multiscroll's third mode
  230.  
  231.  
  232.  
  233.  
  234. Idle Handler
  235.  
  236.  
  237.  
  238.  
  239. That's All
  240.  
  241.  
  242.  
  243.  
  244.  
  245. The Author
  246.  
  247. -- part contents for card part 3
  248. ----- text -----
  249. 0
  250.  
  251. 1
  252.  
  253.  
  254.  
  255.  
  256. 2
  257.  
  258.  
  259.  
  260.  
  261.  
  262. 3
  263.  
  264.  
  265.  
  266.  
  267.  
  268.  
  269.  
  270. 4
  271.  
  272.  
  273.  
  274.  
  275.  
  276.  
  277.  
  278.  
  279.  
  280.  
  281.  
  282.  
  283. 5
  284.  
  285.  
  286.  
  287.  
  288.  
  289.  
  290.  
  291.  
  292.  
  293.  
  294.  
  295. 6
  296.  
  297.  
  298.  
  299.  
  300.  
  301.  
  302.  
  303.  
  304. 7
  305.  
  306.  
  307.  
  308.  
  309.  
  310.  
  311.  
  312.  
  313.  
  314.  
  315.  
  316.  
  317. 8
  318.  
  319.  
  320.  
  321.  
  322.  
  323. 9
  324.  
  325.  
  326.  
  327.  
  328.  
  329.  
  330.  
  331. 10
  332.  
  333.  
  334.  
  335.  
  336.  
  337. 11
  338.  
  339.  
  340.  
  341.  
  342. 12
  343.  
  344.  
  345.  
  346.  
  347.  
  348. 13
  349.  
  350. -- part contents for card part 1
  351. ----- text -----
  352.                     MultiScroll XCMD Version 1.0
  353.                                  ‚Ä¢‚Ä¢‚Ä¢‚Ä¢‚Ä¢‚Ä¢‚Ä¢‚Ä¢
  354. Multiple scrolling fields in HyperCard have been a pain 
  355. in the neck for me.  All my HyperTalk attempts to 
  356. implement them have been slow and unMac-like.  I was 
  357. thus motivated to create the Multiscroll XCMD. 
  358.                                  ‚Ä¢‚Ä¢‚Ä¢‚Ä¢‚Ä¢‚Ä¢‚Ä¢‚Ä¢
  359. To use it, just line up the scrolling fields that you wish 
  360. linked so that they overlap and only one scrollbar is 
  361. showing. Make sure the wide margins and line height 
  362. are set the same in each field, and that the fields are 
  363. the same height.
  364.                                  ‚Ä¢‚Ä¢‚Ä¢‚Ä¢‚Ä¢‚Ä¢‚Ä¢‚Ä¢
  365. Next, create a transparent button which is exactly the 
  366. size of your remaining visible scrollbar, i.e., 17 pixels 
  367. wide and the height of the entire field. Make sure Show 
  368. Name and Auto Hilite are off. Place it directly over the 
  369. scrollbar. The idea here will be to use this button to 
  370. intercept mouse clicks and to have it handle the 
  371. scrolling via MultiScroll.
  372.                                  ‚Ä¢‚Ä¢‚Ä¢‚Ä¢‚Ä¢‚Ä¢‚Ä¢‚Ä¢
  373. MultiScroll will use the number of lines in the field in 
  374. its calculations, so you must make sure each line of 
  375. text has a carriage return after it. This is easy for 
  376. most things you would want multiple scrolling fields 
  377. for, but something like this text needs to be attended to 
  378. with intentional carriage returns, otherwise the field 
  379. will not scroll all the way down. This is only necessary
  380. in the primary field (with the scrollbar showing). In
  381. fact, you could make a dummy field with just carriage
  382. returns in it and "underlap" it so just the scrollbar
  383. was showing, instead of placing returns at the end of
  384. each text line in this field.
  385.                                   ‚Ä¢‚Ä¢‚Ä¢‚Ä¢‚Ä¢‚Ä¢‚Ä¢‚Ä¢
  386. So create a MOUSEDOWN handler in the button's script. 
  387. Please take a look at the handler in the script of the 
  388. button overlying this scrollbar for an example. The 
  389. first parameter of Multiscroll must be the rect of the
  390. button. All the rest represent the involved fields, 
  391. starting with the one whose scrollbar is being used. 
  392. Each field parameter should be enclosed in quotation 
  393. marks, and should contain two "sub-parameters." The 
  394. first is the field ID and the second is "card" or "bkgnd" 
  395. depending on the type of field (again, see this field's 
  396. button).
  397.                                  ‚Ä¢‚Ä¢‚Ä¢‚Ä¢‚Ä¢‚Ä¢‚Ä¢‚Ä¢
  398. For the true obsessive-compulsive, you will note that 
  399. in a real scrolling field, you get the arrow cursor when 
  400. you enter the scrollbar. Well, MultiScroll has another
  401. mode using one parameter. The "Init" parameter will
  402. give you the arrow cursor, and the "Uninit" parameter
  403. will return you to the browse tool cursor.  Use these
  404. in mouseWithin and mouseLeave handlers respectively
  405. in the scrollbar button.
  406.                                  ‚Ä¢‚Ä¢‚Ä¢‚Ä¢‚Ä¢‚Ä¢‚Ä¢‚Ä¢
  407. Note for the hopeless obsessive-compulsive: Unlike the
  408. real thumb box, this one does nothing when there is a 
  409. single click in it with no dragging. Also, if you notice 
  410. the light grey scrollbar background shifting slightly 
  411. when you click on the thumb box, try widening or 
  412. reducing the width of the field by a few pixels. The 
  413. proper appearance of the top line of pixels in the light 
  414. grey portion of the scrollbar is 010001000100010. 
  415. Make sure you reposition the button to lie directly
  416. over the scrollbar if you do this. If you don't know 
  417. what I'm talking about, then forget about it and rest 
  418. assured that you are mentally healthy.
  419.                                  ‚Ä¢‚Ä¢‚Ä¢‚Ä¢‚Ä¢‚Ä¢‚Ä¢‚Ä¢
  420. Okay, this setup will now simulate a single scrolling 
  421. field's actions nearly perfectly, except of course, the
  422. arrows will scroll a little slower since the XCMD still 
  423. needs to set multiple scrolls, and this is slow in 
  424. HyperCard.
  425.                                  ‚Ä¢‚Ä¢‚Ä¢‚Ä¢‚Ä¢‚Ä¢‚Ä¢‚Ä¢
  426. Why am I still writing? Well, we still need to 
  427. coordinate the fields for when they are out of our 
  428. control, i.e., if some hapless user does a find command 
  429. and forces one field's scroll down. We want the other 
  430. fields to catch up. To this end, I have declared a global 
  431. variable named "initScroll" into which I put 0 on 
  432. openCard.
  433.                                  ‚Ä¢‚Ä¢‚Ä¢‚Ä¢‚Ä¢‚Ä¢‚Ä¢‚Ä¢
  434. MultiScroll has a third additional mode which is useful
  435. here. If you put an integer instead of a rect in the first 
  436. parameter, it will set the scrolls to that integer. Take 
  437. a look at the openCard card script to see how we use 
  438. this to set the scrolls to 0 on openCard.
  439.                                  ‚Ä¢‚Ä¢‚Ä¢‚Ä¢‚Ä¢‚Ä¢‚Ä¢‚Ä¢
  440. Finally, I use this mode in an idle handler in the card 
  441. script which checks the fields against initScroll and 
  442. resets them if necessary. Notice that we also keep 
  443. initScroll updated from the scrollbar button script.
  444.                                  ‚Ä¢‚Ä¢‚Ä¢‚Ä¢‚Ä¢‚Ä¢‚Ä¢‚Ä¢
  445. That's all there is to it. Very simple compared to other 
  446. methods. This XCMD is free and in the public domain. I 
  447. would appreciate your crediting me in your stacks if 
  448. you use it since this little bit of narcissism is my only 
  449. reward. 
  450.                                  ‚Ä¢‚Ä¢‚Ä¢‚Ä¢‚Ä¢‚Ä¢‚Ä¢‚Ä¢
  451.                                 Oscar F. Hills 
  452.                         34 Maplewood Terrace
  453.                             Hamden, CT 06514
  454.                              (203) 287-1913
  455.  
  456.                           CIS => 73317,3005
  457.                              GEnie => O.HILLS
  458.  
  459. -- part contents for card part 11
  460. ----- text -----
  461.           For those of you who have my automatic disk cataloging
  462.           stack, AutoCat 4.01 (or my primitive version, Auto Floppy Log),  I would like to announce the planned release of AutoCat 5.0 towards the end of the summer, 1988 that is.  The design is all new, and the stack is menu driven to reduce clutter.  Multiscroll is just one of  the many externals used to polish up AutoCat.
  463.           It will include printing and report generating externals which will allow the user to print out disk catalogs or send them to a file, or to search the entire collection extracting the selected items for printing or other purposes. Of course you'll still be able to do powerful searches, display a file's pathway graphically, and launch any file from the catalogs.
  464.            AutoCat 5.0 will be free to registered users of AutoCat 4.01, and may not be available by any other route since shareware fees don't even cover my phone bill at this point. Register today!
  465.  
  466.  
  467.  
  468.  
  469.  
  470.  
  471.